\paragraph{Présentation de WEKA}
~\\

{\em Weka} (Waikato Environment for Knowledge Analysis) est un ensemble d'outils permettant de manipuler et d'analyser des fichiers de données, implémentant la plupart des algorithmes de classification.
Il est écrit en java, disponible sur le web\footnote{\url{http://www.cs.waikato.ac.nz/ml/weka/}} et se compose principalement:
\begin{itemize}
\item[\textopenbullet ]De classes Java permettant de charger et de manipuler les données.
\item[\textopenbullet ]De classes pour les principaux algorithmes de classification supervisée ou non supervisée.
\item[\textopenbullet ]D'outils de sélection d'attributs, de statistiques sur ces attributs.
\item[\textopenbullet ]De classes permettant de visualiser les résultats.
\end{itemize}
~\\

On peut l'utiliser à trois niveaux:
\begin{itemize}
\item[\textopenbullet ]Via l'interface graphique, pour charger un fichier de données, lui appliquer un algorithme de classification et vérifier son efficacité.
\item[\textopenbullet ]Invoquer un algorithme sur la ligne de commande.
\item[\textopenbullet ]Utiliser des classes définies dans ses propres programmes pour créer d'autres méthodes, implémenter d'autres algorithmes et comparer ou combiner plusieurs méthodes.
\end{itemize}

\newpage
\paragraph{Format Weka (format d'entrée)}
~\\

Le format spécifique de Weka (format arff) se compose:
\begin{itemize}
\item[\textopenbullet ]Du nom de la relation : @relation (on utilisera toujours kmers\_count) (figure \ref{fichierweka0} ligne 2)
\item[\textopenbullet ]De la liste des noms d'attributs (@attribute ) et du type de valeurs. Pour le projet, il s'agira uniquement de valeurs numériques correspondantes aux comptages des kmots. (figure \ref{fichierweka0} ligne 4 à 11)
\item[\textopenbullet ]D'une dernière instance à prédire ou à apprendre. Concernant le projet ça sera la liste d'identifiants des taxons pour lesquels on a effectué le comptage, soit les identifiants des taxons à prédire, à apprendre (figure \ref{fichierweka0} ligne 13 à 16).
\item[\textopenbullet ]De la liste des données : chaque ligne représente une description, par la liste des valeurs de chacun de ses attributs. Ici les vecteurs de comptage suivi de l'identifiant du taxon concerné. (figure \ref{fichierweka0} ligne 19 à 30)
\end{itemize}
~\\

Par exemple si on a effectué le comptage pour des 2-mers pour les taxons $t_1$,$t_2$ et $t_3$ d'identifiants respectifs $id\_1$,$id\_2$ et $id\_3$ on a comme fichier d'entrée WEKA (figure \ref{fichierweka0}):
\begin{figure}[H]
\begin{lstlisting}[numbers=left]
    // La relation du nom de kmers_count qui compte les kmers.
    @relation kmers_count
    
    // Tous les attributs correspondants aux differentes combinaisons de nucleotides possibles.
    @attribute AA numeric
    @attribute AC numeric
    @attribute AG numeric
    @attribute AT numeric
    ...
    @attribute TG numeric
    @attribute TT numeric
    
    //le dernier attribut a predire
    // Un attribut enumeratif, contenant les ids des taxons pour lesquels
    //on a fait le comptage, cet attribut sera a predire ou a apprendre
    @attribute id {id1,id2,id3}
    
    // Les donnees correspondantes aux differents attributs
    @data
    //le vecteur de comptage avec l'id du taxon : id1
    0,3,0,2,0,1,1,1,1,0,1,1,3,0,0,0,id1 
    2,4,0,5,1,1,0,0,0,1,3,4,2,1,7,3,id1
    
    //le comptage pour id2
    ...                            ,id2
    
    //le comptage pour id3
    ...                            ,id3
    ...                            ,id3
    ...                            ,id3  
\end{lstlisting}
\caption[Fichier arff donné en entrée à Weka]{\label{fichierweka0} Fichier arff donné en entrée à Weka, pour un comptage de 2-mer. On a au départ la déclaration des attributs et ensuite les données numériques.}
\end{figure}
~\\

\paragraph{Intérêt de son utilisation dans le projet}
~\\

Dans le cadre du projet, Weka a permis d'apprendre, de manière automatique, parmi les signatures génétiques précédemment mesurées, afin de discriminer les caractéristiques propres aux lignées considérées. Ceci dans le but d'établir les caractéristiques de chaque taxon. 
\\
\newpage
Par exemple si on a:
\begin{itemize}
\item[\textopenbullet ]Un taxon $A_0$.
\item[\textopenbullet ]Ses fils \textcolor{red}{$A_1$}, \textcolor{green}{$A_2$} et \textcolor{blue}{$A_3$}. (3 ensembles de points)
\item[\textopenbullet ]Leurs identifiants \textcolor{red}{$id_1$}, \textcolor{green}{$id_1$} et \textcolor{blue}{$id_3$},
\item[\textopenbullet ]Le comptage de kmer des fils \textcolor{red}{$\overrightarrow{C_1}$} et \textcolor{green}{$\overrightarrow{C_2}$} et \textcolor{blue}{$\overrightarrow{C_3}$}.
\item[\textopenbullet ]Une espèce $x$ qui appartient au clade $A_0$ et son comptage {$\overrightarrow{C_x}$} et dont on souhaite déterminer à quel taxon fils \textcolor{red}{$A_1$}, \textcolor{green}{$A_2$} ou \textcolor{blue}{$A_3$} elle appartient plus spécifiquement.
\end{itemize}
~\\

En fournissant à Weka le comptage effectué pour chaque fils comme ensemble d'apprentissage, en choisissant un algorithme d'apprentissage et en fournissant le comptage {$\overrightarrow{C_x}$} comme données à classer le programme va déterminer quel identifiant (parmi $id_1, id_2$ et $id_3$ ) correspond à la signature {$\overrightarrow{C_x}$} de l'espèce inconnue, selon l'algorithme choisi.
~\\

Pour illustrer le concept, on peut imaginer que Weka va placer les différentes coordonnées dans un espace à deux dimensions avec leurs étiquettes (identifiants). Après avoir placé l'espèce inconnue, Weka va l'étiqueter par rapport aux points précédemment placés. Cet étiquetage sera relatif à l'algorithme d'apprentissage choisi.   

\begin{figure}[H]
\begin{center}
\includegraphics[scale=0.6]{../imports/cluster.png}
\caption{\label{cluster} Vue graphique de la classification}
\end{center}
\end{figure}

Dans l'exemple naïf de la figure \ref{cluster}, l'espèce $x$ sera vraisemblablement classée dans le groupe $A_1$.
~\\

En se basant sur ces méthodes, classer une espèce inconnue revient à commencer depuis la racine (Eucaryotes), puis descendre au plus bas de l'arbre phylogénétique construit en local, tout en prédisant, à chaque taxon $A$, auquel des taxons fils $A_1$, $A_2$, ... une séquence peut être attribuée. Cette décision sera prise à chaque niveau de l'arborescence.
